package sistkaraoke.dao;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Iterator;

import sistkaraoke.excepcion.DAOExcepcion;
import sistkaraoke.modelo.DetallePedido;
import sistkaraoke.modelo.Pedido;
import sistkaraoke.modelo.Producto;
import sistkaraoke.util.ConexionBD;

public class PedidoDAO extends BaseDAO{

	
	public String generaPedido(Pedido pedido)
	{
		String mensaje="";
		
		String query = "{call karaoke.USP_ADD_PEDIDO (?,?,?,?)}";
		Connection con = null;
		CallableStatement cstmt=null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			
			
			con = ConexionBD.obtenerConexion();
			
			cstmt = con.prepareCall(query);
	        
			//cstmt = con.prepareStatement(query);
			cstmt.setString(1, pedido.getTipo());
			cstmt.setInt(2, pedido.getIdCliente());
			cstmt.registerOutParameter(3, java.sql.Types.INTEGER);
			cstmt.registerOutParameter(4, java.sql.Types.VARCHAR);
			
			  int  i = cstmt.executeUpdate();
			  pedido.setIdPedido(cstmt.getInt(3));
			  mensaje=cstmt.getString(4);
		
					  //agregamos el detalle segun tipo
			
			
			if (pedido.getIdPedido()>0)
			{
							
				
				query="EXEC karaoke.USP_ADD_PEDIDO_DETALLE_PEDIDO ?,?,?,?,?";
				
				Iterator itr = pedido.getDetallePedido().iterator();
			      while(itr.hasNext()) {
			    	  DetallePedido element = (DetallePedido) itr.next(); 
						stmt = con.prepareStatement(query);
						stmt.setInt(1, pedido.getIdPedido());
						stmt.setInt(2, element.getIdProducto());
						stmt.setInt(3, element.getIdCancion());
						stmt.setInt(4, element.getCantidad());
						stmt.setString(5, pedido.getTipo());
						stmt.executeUpdate();
			      }

				
			}
			
		
		}
		catch (SQLException e) {
			System.err.println(e.getMessage());
			try {
				throw new DAOExcepcion(e.getMessage());
			} catch (DAOExcepcion e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		
		
		return mensaje;
		
	}
	
	
}
